//yw 1初始化
//var curRowDataJson; //yw将当前行记录保存成json格式并赋给curRownDataJson全局变量，给子页adminMagSave.html使用
layui.use(['form','layer','laydate','table'],function(){
    var $ = layui.jquery;
    var form = layui.form;
    var table= layui.table;
    var layer = layui.layer;
    var laydate = layui.laydate;
    var schoolData = null//yw 学校数据用于填充学校下拉框，防止反复从服务器下载学校数据
    //yw 2显示列表
    var tableIns = table.render({
        elem: '#list',
        //yw layui要和spring boot在一起用idea发布否则不能跨域访问url
        url : '/user/queryUserByName', //模糊查询
        //按学校编号查询也行url : 'http://localhost/user/queryUserBySchoolId?schoolId=2003',
        //通过json文件提供数据用于前端显示url : '../../json/userList.json',
        limit:15, //默认10
        limits:[15,10,20,30],
        page:true,
        width : 900,
        height : 670,
        id : "listTable",
        method:'get', //yw 默认是get方式
        cols : [[
           {field: 'userid', title: 'ID', width:80,align:'center'}, //yw 'userid'区分大小写，自动生成的spring boot代码字段名一般是小写
           {field: 'userrealname', title: '管理员姓名', width:100,align:'center'},
           {field: 'schoolname', title: '学校', width:200,align:'center'},
           {field: 'usertel', title: '手机号码', width:130,align:'center'},
           {field: 'useraddtime', title: '添加时间', width:180, align:'center'},
           //{field: 'userAddTime', title: '添加时间', width:150, align:'center', minWidth:110, templet:function(d){
            //     return d.userAddTime.substring(0,10);
            // }},//yw 显示YYYY-MM-DD没有时间
           {fixed:"right",title: '操作', toolbar:'#listRowBar',align:"center"}
        ]]//,

    });
    //yw 3操作 1)模糊查询
    //也可用 form.on("submit(search_btn)",function(data){
    $(".search_btn").on("click",function(){ //data
        //alert(data); //yw 这种调试没有用，只输出[object Object]这一抽想提示信息，可用console.log(data)在浏览器的控制台看
        tableIns.reload({
            page: {
                    curr: 1 //重新从第 1 页开始
            },
            where:{
                name: $(".searchVal").val()  //搜索的关键字
            },
            url:'/user/queryUserByName'
        });
        return false;
    });

   //yw 3操作 2)新增 (a)打开添加的弹出层
   $(".add_btn").click(function(){
        mainIndex = layer.open({
            title : ['添加管理员','font-size:18px;text-align:center;color:blue;'],
            type : 1, //yw 0.默认信息框,1.page,2.iframe,3.加载层,4.tips层
            content : $("#addDiv"),//yw ,$("#addDiv"),type:1 | "gatewayAdd.html", type:2
            //type : 2, //yw 0.默认信息框,1.page,2.iframe,3.加载层,4.tips层
            //content : "adminMagAdd.html", //yw ,$("#addDiv"),type:1 | "gatewayAdd.html", type:2
            //closeBtn:0, //yw 0false不显示关闭按钮,1true显示关闭按钮, 默认值
            area:['400px','490px'],
            offset:'r',
            success : function(){  //yw 如果里面的代码有问题则弹出层不可见或功能失常
                if(schoolData == null) {
                    $.ajax({ //yw 从后台获取学校数据，填充前端的学校下拉框
                        url:'/school/getAllSchoolName',
                        async:false, //yw 取消异步下载模式，
                        dataType:'json',
                        type:'post',
                        success:function(data2){
                            schoolData = data2;
                            $.each(data2,function(index,item){
                                $("#schoolId").append(new Option(item.name,item.id));
                            });
                            form.render("select");
                        }
                    })
                }else{
                    $.each(schoolData,function(index,item){
                        $("#schoolId").append(new Option(item.name,item.id));
                    });
                    form.render("select");
                }
            }
        });
    })

    //yw 3操作 2)新增 (b)提交监听事件--新增记录
    form.on("submit(doSubmitAdd)",function(){ //有的是function(index,layero)但这里参数没有使用
    //$("#doSubmitAdd").click(function(index,layero){ //yw 不要用这种底层方式处理事件会绕过表单验证
        $.ajax({ //yw 也可使用layer的$.post(url,data,function(res){}方法)
            type:"post",
            url:"/user/addUser",
            data:{schoolid:$("#schoolId").val(),schoolname:$("#schoolId").find("option:selected").text(),userrealname:$("#userRealname").val(),username:$("#userName").val(),userpwd:$("#userPwd").val(),usertel:$("#userTel").val(),userremark:$("#userRemark").val()},
            success:function(res){  //yw res是后端的返回值,有的是int，有的是object;data是前端数据，data与res不能混淆
                //alert(res);
                if(res){
                    tableIns.reload();
                    layer.msg('新增成功',{icon:7,time:800,shade:[0.6,'#000',true]});
                }else{
                    layer.msg('新增失败',{icon:7,time:800,shade:[0.6,'#000',true]});
                }
                layer.closeAll('page'); //yw 关闭新增界面
            }
        });
    });

    //禁止表单回车提交
    $('form').on('keydown', function (event) {
        if (event.keyCode == 13) return false;
    })

    //yw 监听行工具条的事件
    table.on("tool(list)", function(obj){
        var   data = obj.data; //获得当前行数据
        //yw 将当前行记录保存成json格式并赋给curRownDataJson全局变量，给子页adminMagSave.html使用
        //curRowDataJson = JSON.stringify(data);
        switch(obj.event){
            case 'edit':
                openUpdateLayer(data);
                break;
            case 'del':
                deleteInfo(data);
                break;
        };
    });
     //yw 3操作 3)更新  (a)打开修改的弹出层
     function openUpdateLayer(data){
        mainIndex = layer.open({
            title : ['修改管理员','font-size:18px;text-align:center;color:blue;'],
            type : 1,  //yw 使用这种方式从服务器下载更少数据12kB,处理速度更快47毫秒，提高了并发性
            content : $("#saveDiv"),
            // type : 2,  //yw 使用这种方式从服务器下载更多数据116kB，处理速度更慢264毫秒，减少了并发性
            // content : "adminMagSave.html",
            area:['500px','650px'],
            offset:'r',
            success:function(layero,index){ //yw layero是弹出层对象layer object
                if(schoolData == null) {
                    $.ajax({ //yw 从后台获取学校数据，填充前端的学校下拉框
                        url:'/school/getAllSchoolName',
                        async:false, //yw 取消异步下载模式，否则shoolId2第一次打开没有数据，第二次打开才有数据
                        dataType:'json',
                        type:'post',
                        success:function(res){
                            schoolData = res;
                            //console.log(data); //debug
                            $.each(schoolData,function(index,item){
                                //console.log(item); //debug
                                //console.log(item.schoolname); //debug
                                $("#schoolId2").append(new Option(item.name,item.id));
                            });
                            //form.render("select");       //yw因为后面有form.render("select");
                        }
                    })
                }else{
                    $.each(schoolData,function(index,item){
                        $("#schoolId2").append(new Option(item.name,item.id));
                    });
                }
                 $("#userId").val(data.userid);
                 $("#schoolId2").val(data.schoolid);
                 //form.render("select");//yw因为后面有form.render("select");
                 $("#userTel2").val(data.usertel);
                 $("#userName2").val(data.username);
                 $("#userRealname2").val(data.userrealname);
                 $("#userPwd2").val(data.userpwd);
                 $("#roleId2").val(data.roleid2);
                 //$("#roleId2").append(new Option('其他',3)); //debug
                 form.render("select");//yw 给下拉框赋值要重新渲染一下下拉框或form.render();
                 $("#authCode").val(data.authcode);
                 $("#userState").val(data.userstate);
                 $("#post").val(data.post);
                 $("#userRemark2").val(data.userremark);
            }
        });
        //alert(data.userid); //有数据
        // formData = $('#dataFrm2').serialize() //yw 保存表单到fromData对象中
     }
    //yw 3操作 3)更新 (b)提交监听事件--修改记录
    form.on("submit(doSubmitSave)",function(){ //yw 有的是function(data)但这里的data没有用到
    // $("#doSubmitSave").click(function(data){ //yw 不要用这种底层方式处理事件会绕过表单验证
        $.ajax({
            type:"post",
            url:"/user/saveUser",
            data:{userid:$("#userId").val(),schoolid:$("#schoolId2").val(),schoolname:$("#schoolId2").find("option:selected").text(),usertel:$("#userTel2").val(),userrealname:$("#userRealname2").val(),username:$("#userName2").val(),userpwd:$("#userPwd2").val(),roleid2:$("#roleId2").val(),authcode:$("#authCode").val(),userstate:$("#userState").val(),post:$("#post").val(),userremark:$("#userRemark2").val()},
            success:function(res){  //yw res是后端的返回值,有的是int，有的是object;data是前端数据，data与res不能混淆
                if(res){
                    tableIns.reload();
                    layer.msg('保存成功',{icon:7,time:800,shade:[0.6,'#000',true]});
                }else{
                    layer.msg('保存失败',{icon:7,time:800,shade:[0.6,'#000',true]});
                }
                layer.closeAll('page'); //yw 关闭新增界面 type=1
            }
        });
    });
    //yw 3操作 4)删除
    function deleteInfo(data){
        layer.confirm('你确定要删除['+data.userrealname+']这条数据吗?',{icon:3,title:'提示'},function(index){
            $.ajax({
                type:"POST",
                url:'/user/delUser?userId='+data.userid,
                success:function(res){
                    if(res){
                        tableIns.reload();
                        layer.msg('删除成功',{icon:7,time:800,shade:[0.6,'#000',true]});
                    }else{
                        layer.msg('删除失败',{icon:7,time:800,shade:[0.6,'#000',true]});
                    }
                }
            });
            layer.close(index); //yw 关闭删除提示对话框
        });
    }
    //yw 表单验证
    form.verify({
        required: [/[\S]+/, "不能为空"],
        username:[/^[a-zA-Z0-9_-]{4,16}$/,"用户名4-16位字母数字下划线减号"],
        phone: [/(^$)|^1\d{10}$/, "请输入正确的手机号"],
        email: [/(^$)|^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/, "邮箱格式不正确"],
        url: [/(^$)|(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/, "链接格式不正确"],
        integer: [/^\d*$/, "只能填写整数"],
        date: [/(^$)|^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/, "日期格式不正确"],
        identity: [/(^$)|(^\d{15}$)|(^\d{17}(x|X|\d)$)/, "请输入正确的身份证号"],
        // 校验两次密码是否一致
        userPwd: [/(.+){6,12}$/, '密码必须6到12位'],
        userPwdCheck:function(value){
            if($('input[name=userPwd]').val() !== value)
                return '两次密码输入不一致！';
        },
        number: function (e) {
            if (e && isNaN(e))return "只能填写数字"
        },
        lenLimit20:function(value){
            if(value.length>20) return '长度不能超过20个字符';
        },
        lenLimit50:function(value){
            if(value.length>20) return '长度不能超过50个字符';
        }
    });
}); //yw 最后一行对应layui.use(['form','layer','laydate','table'],function(){
